๋ถ์ฐ ์์คํ ์ ์ํ CAP ์ ๋ฆฌ์ ํฌ๊ด์ ์ธ ์ค๋ช . ์ผ๊ด์ฑ, ๊ฐ์ฉ์ฑ, ๋ถํ ํ์ฉ์ฑ ๊ฐ์ ํธ๋ ์ด๋์คํ๋ฅผ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ฌ๋ก์ ํจ๊ป ํ๊ตฌํฉ๋๋ค.
CAP ์ ๋ฆฌ ์ดํดํ๊ธฐ: ์ผ๊ด์ฑ, ๊ฐ์ฉ์ฑ, ๋ถํ ํ์ฉ์ฑ
๋ถ์ฐ ์์คํ ์ ์์ญ์์ CAP ์ ๋ฆฌ๋ ์ ๋ขฐ์ฑ ์๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ๋ ๋ฐ ๋ด์ฌ๋ ํธ๋ ์ด๋์คํ๋ฅผ ์ง๋ฐฐํ๋ ๊ธฐ๋ณธ ์์น์ผ๋ก ์๋ฆฌ ์ก๊ณ ์์ต๋๋ค. ์ด ์ ๋ฆฌ๋ ๋ถ์ฐ ์์คํ ์ด ๋ค์ ์ธ ๊ฐ์ง ํน์ฑ ์ค ๋ ๊ฐ์ง๋ง์ ๋ณด์ฅํ ์ ์๋ค๊ณ ๋งํฉ๋๋ค:
- ์ผ๊ด์ฑ(Consistency, C): ๋ชจ๋ ์ฝ๊ธฐ ์์ฒญ์ ๊ฐ์ฅ ์ต๊ทผ์ ์ฐ๊ธฐ ๊ฒฐ๊ณผ ๋๋ ์ค๋ฅ๋ฅผ ์์ ํฉ๋๋ค. ๋ชจ๋ ๋ ธ๋๋ ๋์์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ด ๋๋ค.
- ๊ฐ์ฉ์ฑ(Availability, A): ๋ชจ๋ ์์ฒญ์ (์ค๋ฅ๊ฐ ์๋) ์๋ต์ ์์ ํ์ง๋ง, ๊ฐ์ฅ ์ต๊ทผ์ ์ฐ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ํฌํจํ๋ค๋ ๋ณด์ฅ์ ์์ต๋๋ค. ์ผ๋ถ ๋ ธ๋๊ฐ ๋ค์ด๋๋๋ผ๋ ์์คํ ์ ๊ณ์ ์๋ํฉ๋๋ค.
- ๋ถํ ํ์ฉ์ฑ(Partition Tolerance, P): ๋คํธ์ํฌ ์ฅ์ ๋ก ์ธํ ์์์ ๋ถํ ์๋ ๋ถ๊ตฌํ๊ณ ์์คํ ์ ๊ณ์ ์๋ํฉ๋๋ค. ์์คํ ์ ๋ ธ๋ ๊ฐ์ ํต์ ๋์ ์ ํ์ฉํฉ๋๋ค.
2000๋ ์๋ฆญ ๋ธ๋ฃจ์ด(Eric Brewer)๊ฐ ์ฒ์ ์ถ์ธกํ๊ณ 2002๋ ์ธ์ค ๊ธธ๋ฒํธ(Seth Gilbert)์ ๋ธ์ ๋ฆฐ์น(Nancy Lynch)๊ฐ ์ฆ๋ช ํ CAP ์ ๋ฆฌ๋ ์ด๋ก ์ ์ธ ์ ์ฝ์ด ์๋๋ผ, ์ํคํ ํธ์ ๊ฐ๋ฐ์๊ฐ ๋ถ์ฐ ์์คํ ์ ๊ตฌ์ถํ ๋ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํ ์ค์ง์ ์ธ ํ์ค์ ๋๋ค. CAP์ ์๋ฏธ๋ฅผ ์ดํดํ๋ ๊ฒ์ ์์คํ ์ค๊ณ์ ๋ํ ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ณ ์ฌ๋ฐ๋ฅธ ๊ธฐ์ ์ ์ ํํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
๋ ๊น์ด ํ๊ณ ๋ค๊ธฐ: ์ผ๊ด์ฑ, ๊ฐ์ฉ์ฑ, ๋ถํ ํ์ฉ์ฑ์ ์ ์
์ผ๊ด์ฑ(C)
CAP ์ ๋ฆฌ์ ๋งฅ๋ฝ์์ ์ผ๊ด์ฑ์ ์ ํ์ฑ(linearizability) ๋๋ ์์์ ์ผ๊ด์ฑ(atomic consistency)์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋ง์น ๋ฐ์ดํฐ์ ๋ณต์ฌ๋ณธ์ด ํ๋๋ง ์๋ ๊ฒ์ฒ๋ผ ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋์์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ณธ๋ค๋ ๊ฒ์ ๋ปํฉ๋๋ค. ์์คํ ์ ๋ํ ๋ชจ๋ ์ฐ๊ธฐ๋ ์ดํ์ ๋ชจ๋ ์ฝ๊ธฐ์์ ์ฆ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ ๊ฐ์ฅ ๊ฐ๋ ฅํ ํํ์ ์ผ๊ด์ฑ์ด๋ฉฐ ์ข ์ข ๋ ธ๋ ๊ฐ์ ์๋นํ ์กฐ์ ์ ํ์๋ก ํฉ๋๋ค.
์์: ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ํ ํญ๋ชฉ์ ๋ํด ์ ์ฐฐํ๋ ์ ์ ์๊ฑฐ๋ ํ๋ซํผ์ ์์ํด ๋ณด์ญ์์ค. ์์คํ ์ด ๊ฐ๋ ฅํ๊ฒ ์ผ๊ด๋๋ฉด ๋ชจ๋ ์ฌ๋์ด ์ค์๊ฐ์ผ๋ก ํ์ฌ ์ต๊ณ ์ ์ฐฐ๊ฐ๋ฅผ ๋ด ๋๋ค. ํ ์ฌ์ฉ์๊ฐ ๋ ๋์ ๊ฐ๊ฒฉ์ ์ ์ฐฐํ๋ฉด ๋ค๋ฅธ ๋ชจ๋ ์ฌ์ฉ์๋ ์ฆ์ ์ ๋ฐ์ดํธ๋ ์ ์ฐฐ๊ฐ๋ฅผ ๋ด ๋๋ค. ์ด๋ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ ๊ณต์ ํ ์ ์ฐฐ์ ๋ณด์ฅํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ถ์ฐ ์์คํ ์์ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ๋ฌ์ฑํ๋ ๊ฒ์ ํนํ ๋คํธ์ํฌ ๋ถํ ์ด ์๋ ๊ฒฝ์ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ์ด๋ ์ข ์ข ๊ฐ์ฉ์ฑ์ ํฌ์ํด์ผ ํ๋ฉฐ, ์์คํ ์ด ๋ชจ๋ ๋ ธ๋๊ฐ ๋๊ธฐํ๋ ๋๊น์ง ์ฐ๊ธฐ๋ ์ฝ๊ธฐ๋ฅผ ์ฐจ๋จํด์ผ ํ ์๋ ์์ต๋๋ค.
๊ฐ์ฉ์ฑ(A)
๊ฐ์ฉ์ฑ์ ๋ชจ๋ ์์ฒญ์ด ์๋ต์ ์์ ํ์ง๋ง, ๊ทธ ์๋ต์ด ๊ฐ์ฅ ์ต๊ทผ์ ์ฐ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ํฌํจํ๋ค๋ ๋ณด์ฅ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์์คํ ์ ์ผ๋ถ ๋ ธ๋๊ฐ ๋ค์ด๋๊ฑฐ๋ ์ ๊ทผํ ์ ์๋๋ผ๋ ๊ณ์ ์๋ํด์ผ ํฉ๋๋ค. ๋์ ๊ฐ์ฉ์ฑ์ ๋ง์ ์์ ์ฌ์ฉ์์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํด์ผ ํ๊ณ ๋ค์ดํ์์ ์ฉ๋ฉํ ์ ์๋ ์์คํ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์์: ์์ ๋ฏธ๋์ด ํ๋ซํผ์ ์๊ฐํด ๋ณด์ญ์์ค. ํ๋ซํผ์ด ๊ฐ์ฉ์ฑ์ ์ฐ์ ์ํ๋ค๋ฉด, ์ผ๋ถ ์๋ฒ์ ๋ฌธ์ ๊ฐ ์๊ฑฐ๋ ์ผ์์ ์ธ ๋คํธ์ํฌ ์ค๋จ์ด ์๋๋ผ๋ ์ฌ์ฉ์๋ ํญ์ ํ๋ซํผ์ ์ ์ํ๊ณ ๊ฒ์๋ฌผ์ ๋ณผ ์ ์์ต๋๋ค. ํญ์ ์ต์ ์ ๋ฐ์ดํธ๋ฅผ ๋ณด์ง๋ ๋ชปํ ์๋ ์์ง๋ง ์๋น์ค๋ ๊ณ์ ์ด์ฉ ๊ฐ๋ฅํฉ๋๋ค.
๋์ ๊ฐ์ฉ์ฑ์ ๋ฌ์ฑํ๋ ค๋ฉด ์ข ์ข ์ผ๊ด์ฑ ์๊ตฌ ์ฌํญ์ ์ํํด์ผ ํฉ๋๋ค. ์ผ๋ถ ๋ ธ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ์๋ ๊ณ์ํด์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ์์คํ ์ด ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ๊ฑฐ๋ ์ ๋ฐ์ดํธ๋ฅผ ์ง์ฐํด์ผ ํ ์ ์์ต๋๋ค.
๋ถํ ํ์ฉ์ฑ(P)
๋ถํ ํ์ฉ์ฑ์ ๋ ธ๋ ๊ฐ์ ํต์ ์ด ์ค๋จ๋๋๋ผ๋ ์์คํ ์ด ๊ณ์ ์๋ํ ์ ์๋ ๋ฅ๋ ฅ์ ๋งํฉ๋๋ค. ๋คํธ์ํฌ ๋ถํ ์ ๋ถ์ฐ ์์คํ ์์ ํผํ ์ ์๋ ์ผ์ ๋๋ค. ์ด๋ ๋คํธ์ํฌ ์ค๋จ, ํ๋์จ์ด ์ฅ์ ๋๋ ์ํํธ์จ์ด ๋ฒ๊ทธ์ ๊ฐ์ ๋ค์ํ ์์ธ์ผ๋ก ์ธํด ๋ฐ์ํ ์ ์์ต๋๋ค.
์์: ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ์ํ ์์คํ ์ ์์ํด ๋ณด์ญ์์ค. ์ ๋ฝ๊ณผ ๋ถ๋ฏธ ์ฌ์ด์ ๋คํธ์ํฌ ๋ถํ ์ด ๋ฐ์ํ๋ฉด ์์คํ ์ ๋ ์ง์ญ์์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ณ์ ์๋ํด์ผ ํฉ๋๋ค. ์ ๋ฝ์ ์ฌ์ฉ์๋ ๋ถ๋ฏธ์ ์๋ฒ์ ํต์ ํ ์ ์๋๋ผ๋ ์์ ์ ๊ณ์ ์ ์ ์ํ๊ณ ๊ฑฐ๋๋ฅผ ํ ์ ์์ด์ผ ํ๋ฉฐ, ๊ทธ ๋ฐ๋๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
๋ถํ ํ์ฉ์ฑ์ ๋๋ถ๋ถ์ ํ๋ ๋ถ์ฐ ์์คํ ์ ํ์์ ์ธ ์์๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์์คํ ์ ๋ถํ ์ด ๋ฐ์ํ๋๋ผ๋ ์๋ํ๋๋ก ์ค๊ณ๋ฉ๋๋ค. ํ์ค ์ธ๊ณ์์ ๋ถํ ์ด ๋ฐ์ํ๋ค๋ ์ ์ ๊ณ ๋ คํ ๋, ์ผ๊ด์ฑ๊ณผ ๊ฐ์ฉ์ฑ ์ฌ์ด์์ ์ ํํด์ผ ํฉ๋๋ค.
CAP ์ ๋ฆฌ์ ์ค์ ์ ์ฉ: ํธ๋ ์ด๋์คํ ์ ํํ๊ธฐ
CAP ์ ๋ฆฌ๋ ๋คํธ์ํฌ ๋ถํ ์ด ๋ฐ์ํ์ ๋ ์ผ๊ด์ฑ๊ณผ ๊ฐ์ฉ์ฑ ์ฌ์ด์์ ํธ๋ ์ด๋์คํ๋ฅผ ๊ฐ์ํฉ๋๋ค. ๋ ๊ฐ์ง๋ฅผ ๋์์ ๊ฐ์ง ์๋ ์์ต๋๋ค. ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
CP ์์คํ : ์ผ๊ด์ฑ๊ณผ ๋ถํ ํ์ฉ์ฑ
CP ์์คํ ์ ์ผ๊ด์ฑ๊ณผ ๋ถํ ํ์ฉ์ฑ์ ์ฐ์ ์ํฉ๋๋ค. ๋ถํ ์ด ๋ฐ์ํ๋ฉด ์ด๋ฌํ ์์คํ ์ ๋ชจ๋ ๋ ธ๋์์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ฐ๊ธฐ๋ ์ฝ๊ธฐ๋ฅผ ์ฐจ๋จํ ์ ์์ต๋๋ค. ์ด๋ ์ผ๊ด์ฑ์ ์ํด ๊ฐ์ฉ์ฑ์ด ํฌ์๋จ์ ์๋ฏธํฉ๋๋ค.
CP ์์คํ ์ ์์:
- ZooKeeper: ๊ตฌ์ฑ ์ ๋ณด ์ ์ง, ์ด๋ฆ ์ง์ , ๋ถ์ฐ ๋๊ธฐํ ๋ฐ ๊ทธ๋ฃน ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์ค์ ์ง์ค์ ์๋น์ค์ ๋๋ค. ZooKeeper๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋์ผํ ์์คํ ์ํ ๋ทฐ๋ฅผ ๊ฐ๋๋ก ์ผ๊ด์ฑ์ ์ฐ์ ์ํฉ๋๋ค.
- Raft: Paxos๋ณด๋ค ์ดํดํ๊ธฐ ์ฝ๊ฒ ์ค๊ณ๋ ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๊ฐ๋ ฅํ ์ผ๊ด์ฑ๊ณผ ๋ด๊ฒฐํจ์ฑ์ ์ค์ ์ ๋์ด ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ๊ฐ์ฅ ์ค์ํ ๋ถ์ฐ ์์คํ ์ ์ ํฉํฉ๋๋ค.
- MongoDB (๊ฐ๋ ฅํ ์ผ๊ด์ฑ ์ค์ ์): MongoDB๋ ๋ค์ํ ์ผ๊ด์ฑ ์์ค์ผ๋ก ๊ตฌ์ฑํ ์ ์์ง๋ง, ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์ฌ์ฉํ๋ฉด ์ฝ๊ธฐ ์์ ์ด ํญ์ ๊ฐ์ฅ ์ต๊ทผ์ ์ฐ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
CP ์์คํ ์ ์ฌ์ฉ ์ฌ๋ก:
- ๊ธ์ต ๊ฑฐ๋: ๋ชจ๋ ๊ฑฐ๋๊ฐ ๋ชจ๋ ๊ณ์ ์ ๊ฑธ์ณ ์ ํํ๊ณ ์ผ๊ด๋๊ฒ ๊ธฐ๋ก๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ฌ๊ณ ๊ด๋ฆฌ: ์ด๊ณผ ํ๋งค๋ ํ์ ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ํํ ์ฌ๊ณ ์์ค์ ์ ์งํฉ๋๋ค.
- ๊ตฌ์ฑ ๊ด๋ฆฌ: ๋ถ์ฐ ์์คํ ์ ๋ชจ๋ ๋ ธ๋๊ฐ ๋์ผํ ๊ตฌ์ฑ ์ค์ ์ ์ฌ์ฉํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
AP ์์คํ : ๊ฐ์ฉ์ฑ๊ณผ ๋ถํ ํ์ฉ์ฑ
AP ์์คํ ์ ๊ฐ์ฉ์ฑ๊ณผ ๋ถํ ํ์ฉ์ฑ์ ์ฐ์ ์ํฉ๋๋ค. ๋ถํ ์ด ๋ฐ์ํ๋ฉด ์ด๋ฌํ ์์คํ ์ ๋ฐ์ดํฐ๊ฐ ์ผ์์ ์ผ๋ก ๋ถ์ผ์นํ๋๋ผ๋ ๋ถํ ๋ ์์ชฝ์์ ์ฐ๊ธฐ๋ฅผ ๊ณ์ ํ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๊ฐ์ฉ์ฑ์ ์ํด ์ผ๊ด์ฑ์ด ํฌ์๋จ์ ์๋ฏธํฉ๋๋ค.
AP ์์คํ ์ ์์:
AP ์์คํ ์ ์ฌ์ฉ ์ฌ๋ก:
- ์์ ๋ฏธ๋์ด ํผ๋: ์ผ๋ถ ์ ๋ฐ์ดํธ๊ฐ ์ผ์์ ์ผ๋ก ์ง์ฐ๋๋๋ผ๋ ์ฌ์ฉ์๊ฐ ํญ์ ํผ๋์ ์ก์ธ์คํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ ์ ์๊ฑฐ๋ ์ ํ ์นดํ๋ก๊ทธ: ์ผ๋ถ ์ ํ ์ ๋ณด๊ฐ ์์ ํ ์ต์ ์ด ์๋๋๋ผ๋ ์ฌ์ฉ์๊ฐ ์ ํ์ ํ์ํ๊ณ ๊ตฌ๋งคํ ์ ์๋๋ก ํ์ฉํฉ๋๋ค.
- ์ค์๊ฐ ๋ถ์: ์ผ๋ถ ๋ฐ์ดํฐ๊ฐ ์ผ์์ ์ผ๋ก ๋๋ฝ๋๊ฑฐ๋ ๋ถ์ ํํ๋๋ผ๋ ์ค์๊ฐ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
CA ์์คํ : ์ผ๊ด์ฑ๊ณผ ๊ฐ์ฉ์ฑ (๋ถํ ํ์ฉ์ฑ ์์)
์ด๋ก ์ ์ผ๋ก๋ ๊ฐ๋ฅํ์ง๋ง CA ์์คํ ์ ๋คํธ์ํฌ ๋ถํ ์ ํ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก๋ ๋๋ญ ๋๋ค. ์ด๋ ๋คํธ์ํฌ ์ฅ์ ๊ฐ ํํ ๋ถ์ฐ ํ๊ฒฝ์๋ ์ ํฉํ์ง ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. CA ์์คํ ์ ์ผ๋ฐ์ ์ผ๋ก ๋จ์ผ ๋ ธ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋คํธ์ํฌ ๋ถํ ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๊ฑฐ์ ์๋ ๊ธด๋ฐํ๊ฒ ๊ฒฐํฉ๋ ํด๋ฌ์คํฐ์์ ์ฌ์ฉ๋ฉ๋๋ค.
CAP ์ ๋ฆฌ๋ฅผ ๋์ด์: ๋ถ์ฐ ์์คํ ์ฌ๊ณ ์ ์งํ
CAP ์ ๋ฆฌ๋ ๋ถ์ฐ ์์คํ ์ ํธ๋ ์ด๋์คํ๋ฅผ ์ดํดํ๋ ๋ฐ ์ ์ฉํ ๋๊ตฌ๋ก ๋จ์ ์์ง๋ง, ๊ทธ๊ฒ์ด ์ ๋ถ๋ ์๋๋ผ๋ ์ ์ ์ธ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํ๋์ ๋ถ์ฐ ์์คํ ์ ์ข ์ข CAP์ ํ๊ณ๋ฅผ ์ํํ๊ณ ์ผ๊ด์ฑ, ๊ฐ์ฉ์ฑ, ๋ถํ ํ์ฉ์ฑ ๊ฐ์ ๋ ๋์ ๊ท ํ์ ๋ฌ์ฑํ๊ธฐ ์ํด ์ ๊ตํ ๊ธฐ์ ์ ์ฌ์ฉํฉ๋๋ค.
์ต์ข ์ ์ผ๊ด์ฑ(Eventual Consistency)
์ต์ข ์ ์ผ๊ด์ฑ์ ํน์ ๋ฐ์ดํฐ ํญ๋ชฉ์ ์๋ก์ด ์ ๋ฐ์ดํธ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์ผ๋ฉด ๊ฒฐ๊ตญ ํด๋น ํญ๋ชฉ์ ๋ํ ๋ชจ๋ ์ ๊ทผ์ด ๋ง์ง๋ง์ผ๋ก ์ ๋ฐ์ดํธ๋ ๊ฐ์ ๋ฐํํ ๊ฒ์ด๋ผ๊ณ ๋ณด์ฅํ๋ ์ผ๊ด์ฑ ๋ชจ๋ธ์ ๋๋ค. ์ด๋ ์ ํ์ฑ๋ณด๋ค ์ฝํ ํํ์ ์ผ๊ด์ฑ์ด์ง๋ง ๋ ๋์ ๊ฐ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ์ ํ์ฉํฉ๋๋ค.
์ต์ข ์ ์ผ๊ด์ฑ์ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ๊ฐ ๋๋ฌผ๊ณ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ๋น์ฉ์ด ๋๋ฌด ๋์ ์์คํ ์์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ ๋ฏธ๋์ด ํ๋ซํผ์ ์ฌ์ฉ์ ํ๋กํ์ ์ต์ข ์ ์ผ๊ด์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ํ๋กํ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ชจ๋ ํ๋ก์์๊ฒ ์ฆ์ ํ์๋์ง ์์ ์ ์์ง๋ง, ๊ฒฐ๊ตญ ์์คํ ์ ๋ชจ๋ ๋ ธ๋์ ์ ํ๋ ๊ฒ์ ๋๋ค.
BASE (Basically Available, Soft State, Eventually Consistent)
BASE๋ ๊ฐ์ฉ์ฑ๊ณผ ์ต์ข ์ ์ผ๊ด์ฑ์ ์ฐ์ ์ํ๋ ๋ถ์ฐ ์์คํ ์ค๊ณ๋ฅผ ์ํ ์์น ์งํฉ์ ๋ํ๋ด๋ ์ฝ์ด์ ๋๋ค. ์ด๋ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์ฐ์ ์ํ๋ ํธ๋์ญ์ ์์คํ ์ค๊ณ๋ฅผ ์ํ ์์น ์งํฉ์ธ ACID(์์์ฑ, ์ผ๊ด์ฑ, ๊ณ ๋ฆฝ์ฑ, ์ง์์ฑ)์ ๋์กฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
BASE๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ๋ณด๋ค ํ์ฅ์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ด ๋ ์ค์ํ ๊ธฐํ ๋ถ์ฐ ์์คํ ์์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
PACELC (Partition Tolerance AND Else; Consistency OR Availability)
PACELC๋ ๋คํธ์ํฌ ๋ถํ ์ด ์์ ๋์๋ ํธ๋ ์ด๋์คํ๋ฅผ ๊ณ ๋ คํ๋ CAP ์ ๋ฆฌ์ ํ์ฅ์ ๋๋ค. ์ด๋ ๋ค์๊ณผ ๊ฐ์ด ๋งํฉ๋๋ค: ๋ง์ฝ ๋ถํ (P)์ด ์๋ค๋ฉด, ๊ฐ์ฉ์ฑ(A)๊ณผ ์ผ๊ด์ฑ(C) ์ค์์ ์ ํํด์ผ ํ๊ณ (CAP์ ๋ฐ๋ผ); ๊ทธ ์ธ(E) ์์คํ ์ด ์ ์์ ์ผ๋ก ์คํ๋ ๋๋ ์ง์ฐ ์๊ฐ(L)๊ณผ ์ผ๊ด์ฑ(C) ์ค์์ ์ ํํด์ผ ํฉ๋๋ค.
PACELC๋ ๋ถํ ์ด ์๋ ์ํฉ์์๋ ๋ถ์ฐ ์์คํ ์์ ๋ด๋ ค์ผ ํ ํธ๋ ์ด๋์คํ๊ฐ ์ฌ์ ํ ์กด์ฌํ๋ค๋ ์ฌ์ค์ ๊ฐ์กฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์์คํ ์ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ง์ฐ ์๊ฐ์ ํฌ์ํ๊ธฐ๋ก ์ ํํ ์ ์์ต๋๋ค.
์ค์ฉ์ ์ธ ๊ณ ๋ ค ์ฌํญ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
๋ถ์ฐ ์์คํ ์ ์ค๊ณํ ๋๋ CAP ์ ๋ฆฌ์ ์๋ฏธ๋ฅผ ์ ์คํ๊ฒ ๊ณ ๋ คํ๊ณ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํ ํธ๋ ์ด๋์คํ๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์ค์ฉ์ ์ธ ๊ณ ๋ ค ์ฌํญ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก์ ๋๋ค:
- ์๊ตฌ ์ฌํญ ์ดํด: ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ฅ ์ค์ํ ํน์ฑ์ ๋ฌด์์ ๋๊น? ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ด ํ์์ ์ธ๊ฐ์, ์๋๋ฉด ์ต์ข ์ ์ผ๊ด์ฑ์ ์ฉ๋ฉํ ์ ์๋์? ๊ฐ์ฉ์ฑ์ ์ผ๋ง๋ ์ค์ํ๊ฐ์? ๋คํธ์ํฌ ๋ถํ ์ ์์ ๋น๋๋ ์ด๋ ์ ๋์ธ๊ฐ์?
- ์ฌ๋ฐ๋ฅธ ๊ธฐ์ ์ ํ: ํน์ ์๊ตฌ ์ฌํญ์ ์ ๋ง๋ ๊ธฐ์ ์ ์ ํํ์ญ์์ค. ์๋ฅผ ๋ค์ด, ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ด ํ์ํ ๊ฒฝ์ฐ PostgreSQL ๋๋ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ด ํ์ฑํ๋ MongoDB์ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ๋์ ๊ฐ์ฉ์ฑ์ด ํ์ํ ๊ฒฝ์ฐ Cassandra ๋๋ Couchbase์ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
- ์ฅ์ ๋ฅผ ๊ณ ๋ คํ ์ค๊ณ: ๋คํธ์ํฌ ๋ถํ ์ด ๋ฐ์ํ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ๊ณ ์์คํ ์ด ์ด๋ฅผ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ก ์ค๊ณํ์ญ์์ค. ๋ณต์ , ๋ด๊ฒฐํจ์ฑ, ์๋ ์ฅ์ ์กฐ์น์ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ฅ์ ์ ์ํฅ์ ์ต์ํํ์ญ์์ค.
- ์์คํ ๋ชจ๋ํฐ๋ง: ๋คํธ์ํฌ ๋ถํ ๋ฐ ๊ธฐํ ์ฅ์ ๋ฅผ ๊ฐ์งํ๊ธฐ ์ํด ์์คํ ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ญ์์ค. ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ์์ ์กฐ์น๋ฅผ ์ทจํ ์ ์๋๋ก ๊ฒฝ๊ณ ๋ฅผ ์ฌ์ฉํ์ญ์์ค.
- ์์คํ ํ ์คํธ: ์์คํ ์ด ๋คํธ์ํฌ ๋ถํ ๋ฐ ๊ธฐํ ์ฅ์ ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋์ง ์ฒ ์ ํ ํ ์คํธํ์ญ์์ค. ์ฅ์ ์ฃผ์ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ค์ ์ฅ์ ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๊ณ ์์คํ ์ด ์์๋๋ก ์๋ํ๋์ง ํ์ธํ์ญ์์ค.
๊ฒฐ๋ก
CAP ์ ๋ฆฌ๋ ๋ถ์ฐ ์์คํ ์ ํธ๋ ์ด๋์คํ๋ฅผ ์ง๋ฐฐํ๋ ๊ธฐ๋ณธ ์์น์ ๋๋ค. CAP์ ์๋ฏธ๋ฅผ ์ดํดํ๋ ๊ฒ์ ์์คํ ์ค๊ณ์ ๋ํ ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ณ ์ฌ๋ฐ๋ฅธ ๊ธฐ์ ์ ์ ํํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ์๊ตฌ ์ฌํญ์ ์ ์คํ๊ฒ ๊ณ ๋ คํ๊ณ ์ฅ์ ๋ฅผ ๋๋นํ์ฌ ์ค๊ณํจ์ผ๋ก์จ ์ ๋ขฐํ ์ ์๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋ถ์ฐ ์์คํ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
CAP์ด ๋ถ์ฐ ์์คํ ์ ๋ํด ์๊ฐํ๋ ๋ฐ ์ ์ฉํ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํ์ง๋ง, ๊ทธ๊ฒ์ด ์ ๋ถ๋ ์๋๋ผ๋ ์ ์ ๊ธฐ์ตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํ๋์ ๋ถ์ฐ ์์คํ ์ ์ข ์ข CAP์ ํ๊ณ๋ฅผ ์ํํ๊ณ ์ผ๊ด์ฑ, ๊ฐ์ฉ์ฑ, ๋ถํ ํ์ฉ์ฑ ๊ฐ์ ๋ ๋์ ๊ท ํ์ ๋ฌ์ฑํ๊ธฐ ์ํด ์ ๊ตํ ๊ธฐ์ ์ ์ฌ์ฉํฉ๋๋ค. ๋ถ์ฐ ์์คํ ์ฌ๊ณ ์ ์ต์ ๋ํฅ์ ํ์ ํ๋ ๊ฒ์ ์ฑ๊ณต์ ์ด๊ณ ํ๋ ฅ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ํ์์ ์ ๋๋ค.